package com.yifan.leetcode.dataStructure;

import java.util.Arrays;

/**
 * @Author YIFan
 * @Date 2023-2-4 14:30
 * @Version 1.0
 */
public class 存在重复元素 {


    public static void main(String[] args) {
        System.err.println(存在重复元素.containsDuplicate(new int[]{1, 4, 2, 3}));
    }


    /*
    * 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ，返回 true ；如果数组中每个元素互不相同，返回 false
    * */
    public static boolean containsDuplicate(int[] nums) {
        return nums.length> Arrays.stream(nums).distinct().count()?true:false;
    }

    /*官方题解*/
    /*在对数字从小到大排序之后，数组的重复元素一定出现在相邻位置中。因此，我们可以扫描已排序的数组，每次判断相邻的两个元素是否相等，如果相等则说明存在重复的元素。*/
    public static boolean gf(int[] nums) {
        Arrays.sort(nums);
        int n = nums.length;
        for (int i = 0; i < n - 1; i++) {
            if (nums[i] == nums[i + 1]) {
                return true;
            }
        }
        return false;
    }
}
